@Controller 是 Spring Framework 中的一個注解,用於標記 Java 類,表示它是 Spring MVC 應用程式裡的控制器。控制器的主要工作是處理 HTTP 請求,執行對應的業務邏輯,然後返回視圖或其他形式的response給客戶端。
讓我們來是實際操作一次:
package com.example.spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
@RequestMapping("/hello") // 處理請求的映射
public ModelAndView helloWorld() {
// 建立一個 ModelAndView 物件,並指定視圖名稱
ModelAndView modelAndView = new ModelAndView("helloView");
// 向模型添加數據,可以在視圖中使用
modelAndView.addObject("message", "Hello, Spring MVC!");
return modelAndView; // 回傳 ModelAndView 物件
}
}
在上面的例子中:
@Controller 注解標記 HelloController 類為 Spring MVC 的控制器。@RequestMapping("/hello") 注解指定了處理 /hello 請求的方法 helloWorld()。ModelAndView 類被用來建立一個 ModelAndView 物件,並指定視圖名稱(在這個例子中是 "helloView")。addObject() 方法將數據添加到模型,這樣可以在視圖中呼叫它。return modelAndView; 透過回傳 ModelAndView 物件,告訴 Spring MVC 使用 helloView 視圖並將模型數據渲染到該視圖。這一個簡單的範例,示範了如何使用 @Controller 來創建一個基本的控制器,處理請求並返回 ModelAndView 物件。當使用者訪問 /hello URL 時,可以由 message 物件來取得 "Hello, Spring MVC!" 的字串。
另外有 @Restcontroller 、 @GetMapping 、 @PostMapping 等等的用法,日後會來說明與@Controller 、 @RequestMapping 有什麼樣的區別。
https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller.html
https://www.baeldung.com/spring-controllers